/*
 * CCVisu is a tool for visual graph clustering
 * and general force-directed graph layout.
 * This file is part of CCVisu.
 *
 * Copyright (C) 2005-2011  Dirk Beyer
 *
 * CCVisu is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public License
 * as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * CCVisu is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with CCVisu; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * Please find the GNU Lesser General Public License in file
 * license_lgpl.txt or http://www.gnu.org/licenses/lgpl.txt
 *
 * Dirk Beyer    (firstname.lastname@uni-passau.de)
 * University of Passau, Bavaria, Germany
 */
package org.sosy_lab.ccvisu;

import org.sosy_lab.ccvisu.graph.GraphData;
import org.sosy_lab.common.configuration.Configuration;
import org.sosy_lab.common.configuration.InvalidConfigurationException;
import org.sosy_lab.common.configuration.Option;
import org.sosy_lab.common.configuration.Options;
import org.sosy_lab.util.Colors;

// Command-line options.
@Options(prefix="todo")
public class CCVisuOptions {

  @Option(name="enableFeatureVisu",
      description="Enables support for features")
  private boolean   enableFeatureVisu = false;

  @Option(name="scalePos",
      description="scaling factor for the layout to adjust; LAY, VRML and SVG only")
  // only values > 0 make sense
  private float     scalePos          = 1.0f;

  @Option(name="enableToolTips",
      description="enable tool tips for drawing canvas")
  private boolean   enableToolTips    = false;

  @Option(name="layout.backgroundColor",
      description="Background color for layout output.")
  private Colors    backColor         = Colors.WHITE;

  /** In/Out parameter representing the graph. */
  private GraphData graph             = null;

  public CCVisuOptions(Configuration config, GraphData graph)
      throws InvalidConfigurationException {
    config.inject(this);

    this.graph = graph;
  }

  public boolean isEnableFeatureVisu() {
    return enableFeatureVisu;
  }

  public void setEnableFeatureVisu(boolean enableFeatureVisu) {
    this.enableFeatureVisu = enableFeatureVisu;
  }

  public float getScalePos() {
    return scalePos;
  }

  public void setScalePos(float scalePos) {
    this.scalePos = scalePos;
  }

  public boolean isEnableToolTips() {
    return enableToolTips;
  }

  public void setEnableToolTips(boolean enableToolTips) {
    this.enableToolTips = enableToolTips;
  }

  public Colors getBackColor() {
    return backColor;
  }

  public void setBackColor(Colors backColor) {
    this.backColor = backColor;
  }

  public GraphData getGraph() {
    return graph;
  }

  public void setGraph(GraphData graph) {
    this.graph = graph;
  }
}
